home *** CD-ROM | disk | FTP | other *** search
- static char cnvtdate_prog[] = "@(#)Datumskonversionen";
- static char cnvtdate_ver[] = "@(#)ver 1.00/kr ; 31.05.91";
- /* cnvtdate Konvertieren von Datumsformaten
- **
- ** Autor Klaus Rath
- **
- ** Deklaration char *cnvtdate(char *datum, int dest_format);
- **
- ** Übergabe Die Funktion erwartet einen String in einem der folgenden
- ** Formate :
- ** tt.mm.[[jj]jj] -- Deutsches Format
- ** mm/tt[/[jj]jj] -- Amerikanisches Format
- ** [jj]jjmmtt -- Datenbankformat DDB/4
- ** sowie einen int-Wert, der das Ausgabeformat festlegt.
- ** Rückgabe Zeiger auf ein char-Array, das ausreichend dimensioniert
- ** sein sollte.
- ** Anmerkungen Die Funktion überprüft nicht selbst die Validität des
- ** übergebenen Datums. Dies sollte die aufrufende Funktion
- ** vorher mittels checkdate() sichergestellt haben.
- ** Sollte kein Jahr[hundert] im Übergabestring angegeben wor-
- ** den sein, ermittelt die Funktion das Default-Jahr[hundert]
- ** aus der Systemzeit !
- ** Änderungen 1.00 ; 31.05.91
- ** Erste vollwertige Version
- */
-
- #include <stdio.h>
- #include <string.h>
- #include <time.h>
- #ifdef __TURBOC__
- #define ANSI
- #define MSDOS
- #include <stdlib.h>
- #include <sys\types.h>
- #else
- #include <sys/types.h>
- #endif
- #include "datum.h"
-
- #ifdef ANSI
- char *cnvtdate(char *dstring, int dest_format, char *erg)
- #else
- char *cnvtdate(dstring,dest_format,erg)
- char *dstring;
- int dest_format;
- char *erg;
- #endif
- {
- char tag_s[3],monat_s[3],jahr_s[3],jh_s[3];
- int format;
- char systemzeit_s[26];
- time_t systemzeit;
- int zaehler;
-
- erg[0] = '\0';
-
- /* Überprüfung auf Gültigkeit bzw. Format :
- */
- format = checkdate(dstring);
- if ( !format ) {
- strcpy(erg,(char *)FALSE);
- return(erg);
- }
-
- /* Jahrhundert und Jahr aus der Systemzeit ermitteln und vorbelegen :
- */
- time(&systemzeit);
- strcpy(systemzeit_s,ctime(&systemzeit));
- jh_s[0] = systemzeit_s[20];
- jh_s[1] = systemzeit_s[21];
- jh_s[2] = '\0';
- jahr_s[0] = systemzeit_s[22];
- jahr_s[1] = systemzeit_s[23];
- jahr_s[2] = '\0';
-
- /* Format überprüfen und umkopieren :
- */
- if ( format == 1 || format == 2 || format == 7 ) { /* deutsches Format */
- tag_s[0] = dstring[0];
- tag_s[1] = dstring[1];
- tag_s[2] = '\0';
- monat_s[0] = dstring[3];
- monat_s[1] = dstring[4];
- monat_s[2] = '\0';
- if ( format == 2 ) {
- jh_s[0] = dstring[6];
- jh_s[1] = dstring[7];
- jh_s[2] = '\0';
- jahr_s[0] = dstring[8];
- jahr_s[1] = dstring[9];
- jahr_s[2] = '\0';
- }
- else if ( format == 1 ) {
- jahr_s[0] = dstring[6];
- jahr_s[1] = dstring[7];
- jahr_s[2] = '\0';
- }
- } /* ENDE: Deutsches Format */
- else if ( format == 3 || format == 4 || format == 8 ) { /* am.Format */
- tag_s[0] = dstring[3];
- tag_s[1] = dstring[4];
- tag_s[2] = '\0';
- monat_s[0] = dstring[0];
- monat_s[1] = dstring[1];
- monat_s[2] = '\0';
- if ( format == 4 ) {
- jh_s[0] = dstring[6];
- jh_s[1] = dstring[7];
- jh_s[2] = '\0';
- jahr_s[0] = dstring[8];
- jahr_s[1] = dstring[9];
- jahr_s[2] = '\0';
- }
- else if ( format == 3 ) {
- jahr_s[0] = dstring[6];
- jahr_s[1] = dstring[7];
- jahr_s[2] = '\0';
- }
- } /* ENDE: Amerikanisches Format */
- else if ( format == 5 || format == 6 ) { /* Datenbank-Format */
- if ( format == 6 ) {
- jh_s[0] = dstring[0];
- jh_s[1] = dstring[1];
- jh_s[2] = '\0';
- jahr_s[0] = dstring[2];
- jahr_s[1] = dstring[3];
- jahr_s[2] = '\0';
- tag_s[0] = dstring[6];
- tag_s[1] = dstring[7];
- tag_s[2] = '\0';
- monat_s[0] = dstring[4];
- monat_s[1] = dstring[5];
- monat_s[2] = '\0';
- }
- else {
- jahr_s[0] = dstring[0];
- jahr_s[1] = dstring[1];
- jahr_s[2] = '\0';
- tag_s[0] = dstring[4];
- tag_s[1] = dstring[5];
- tag_s[2] = '\0';
- monat_s[0] = dstring[2];
- monat_s[1] = dstring[3];
- monat_s[2] = '\0';
- }
- } /* ENDE: Datenbankformat */
- /* ENDE:if(Formatprüfung und Kopierung) */
-
- /* Umkopieren in das passende Format, falls nötig :
- */
- if ( format == dest_format ) {
- return(dstring);
- }
-
- switch ( dest_format ) {
-
- /* Deutsche Formate */
- case 1: strcpy(erg,tag_s);
- strcat(erg,".");
- strcat(erg,monat_s);
- strcat(erg,".");
- strcat(erg,jahr_s);
- return(erg);
- case 2: strcpy(erg,tag_s);
- strcat(erg,".");
- strcat(erg,monat_s);
- strcat(erg,".");
- strcat(erg,jh_s);
- strcat(erg,jahr_s);
- return(erg);
- case 7: strcpy(erg,tag_s);
- strcat(erg,".");
- strcat(erg,monat_s);
- strcat(erg,".");
- return(erg);
-
- /* Amerikanische Formate */
- case 3: strcpy(erg,monat_s);
- strcat(erg,"/");
- strcat(erg,tag_s);
- strcat(erg,"/");
- strcat(erg,jahr_s);
- return(erg);
- case 4: strcpy(erg,monat_s);
- strcat(erg,"/");
- strcat(erg,tag_s);
- strcat(erg,"/");
- strcat(erg,jh_s);
- strcat(erg,jahr_s);
- return(erg);
- case 8: strcpy(erg,monat_s);
- strcat(erg,"/");
- strcat(erg,tag_s);
- return(erg);
-
- /* Datenbankformate */
- case 5: strcpy(erg,jahr_s);
- strcat(erg,monat_s);
- strcat(erg,tag_s);
- return(erg);
- case 6: strcpy(erg,jh_s);
- strcat(erg,jahr_s);
- strcat(erg,monat_s);
- strcat(erg,tag_s);
- return(erg);
-
- } /* ENDE: switch(dest_format) */
-
- return((char *)NULL);
- } /* ENDE: cnvtdate() */
-